package com.atguigu.lease;


import com.atguigu.lease.common.config.Knife4jConfiguration;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.FilterType;



/**
 * @author LOGIN
 * @title WebAppApplication
 * @create 2025/6/30 19:14
 * @description
 */
//@SpringBootApplication
    //springBoot项目 组件类的排除
    //原因： common定义了一个Knifesj的配置类 app不需要使用它， 而且他和app项目的配置类重名 冲突了
//    场景一：排除自动配置类（springBoot自动配置加载的142个配置类，或者自定义场景启动器的配置类 可以使用启动类注解 exclude
@SpringBootApplication  //(exclude = { DataSourceAutoConfiguration.class, SecurityAutoConfiguration.class })
    //场景二：组件类排除（发生在IOC容器初始化时！）
    //使用这个注解时，可以自定义扫描组件的包、要扫描的组件类、要排除的组件类
    //必须指定 扫描的包！！！
@ComponentScan(basePackages = {"com.atguigu.lease"},
    //排除不需要的组件类的配置
    excludeFilters={
            @ComponentScan.Filter(
                    //使用类的全类名排除
                    type = FilterType.ASSIGNABLE_TYPE,
                    //只当要排除的组件类
        value = {Knife4jConfiguration.class})
        }
)
public class WebAppApplication {
    public static void main(String[] args) {
        SpringApplication.run(WebAppApplication.class, args);
    }
}
